package com.sromku.simple.fb.listeners;
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
import com.sromku.simple.fb.actions.Cursor;
public abstract class OnActionListener<T> implements OnThinkingListetener {
private Cursor<T> mCursor;
public OnActionListener() {
}
public void onComplete(T response) {
}
@Override
public void onException(Throwable throwable) {
}
@Override
public void onFail(String reason) {
}
@Override
public void onThinking() {
}
public void setCursor(Cursor<T> cursor) {
mCursor = cursor;
}
/**
* Return <code>True</code> if there is another next page with more results.
* You can iterate to the next page and get more results by calling to
* {@link #getNext()} method.
*
* @return <code>True</code> if more results exist.
*/
public boolean hasNext() {
if (mCursor != null) {
return mCursor.hasNext();
}
return false;
}
/**
* Return <code>True</code> if there is another previous page with more
* results. You can iterate to the next page and get more results by calling
* to {@link #getPrev()} method.
*
* @return <code>True</code> if more results exist.
*/
public boolean hasPrev() {
if (mCursor != null) {
return mCursor.hasPrev();
}
return false;
}
/**
* Ask for the next page results in async way. When the response will arrive
* {@link #onComplete(Object)} method will be invoked again.
*/
public void getNext() {
if (mCursor != null) {
mCursor.next();
}
}
/**
* Ask for the prev page results in async way. When the response will arrive
* {@link #onComplete(Object)} method will be invoked again.
*/
public void getPrev() {
if (mCursor != null) {
mCursor.prev();
}
}
/**
* Get the cursor that actually does the 'getMore()' action. For example, if
* you want to hold this instance of cursor somewhere in your app and only
* in some point of time to use it.
*
* @return {@link Cursor} for iteration over pages of response.
*/
public Cursor<T> getCursor() {
return mCursor;
}
public Type getGenericType() {
ParameterizedType parameterizedType = (ParameterizedType) getClass().getGenericSuperclass();
return parameterizedType.getActualTypeArguments()[0];
}
}